package cn.learn.validate.sms;

import cn.learn.validate.ValidateCode;
import lombok.Getter;
import lombok.Setter;

import java.time.LocalDateTime;

/**
 * 短信验证的属性
 *
 * @author huangyezhan
 * @date 2020年02月21日0:39
 */
@Setter
@Getter
public class SmsCode extends ValidateCode {
    /**
     * 发送的短信信息占位符{0}、{1}
     */
    private String msg;

    /**
     * 发送总次数
     * 短信是要钱的，不可能无限发送；
     * 超过规定次数暂时锁定一定时间
     */
    private int sendTotalNum;

    /**
     * 每次发短信的间隔时间
     */
    private LocalDateTime intervalTime;

    /**
     * 手机号码
     */
    private String phoneNumber;

    /**
     * 发送给客户的不是code，而是msg和code组合后的信息
     *
     * @param code       验证码
     * @param expireTime 过期时间
     * @param msg        信息
     */
    public SmsCode(String code, LocalDateTime expireTime, int totalValidations, String msg, LocalDateTime intervalTime) {
        super(code, expireTime, totalValidations);
        this.msg = msg;
        this.intervalTime = intervalTime;
    }

    /**
     * @param code             验证码
     * @param expireTime       有效时长
     * @param totalValidations 总验证码数量
     * @param msg              验证码消息
     * @param intervalTime     发送验证码的间隔时长（秒）
     */
    public SmsCode(String code, int expireTime, int totalValidations, String msg, int intervalTime) {
        super(code, expireTime, totalValidations);
        this.msg = msg;
        this.intervalTime = LocalDateTime.now().plusSeconds(intervalTime);
    }

}
